/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package io;

import java.sql.Date;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Esta clase representa al Data Transfer Object de la entidad Venta
 * @author nahuel
 */
public class VentaDTO {

    private int id;
    private Date fecha;
    private PersonaDTO cliente;
    private PersonaDTO garante1;
    private PersonaDTO garante2;
    private String tipo;
    private double precio;
    private double entrega;
    private String descripcion;
    private MotoDTO moto;
    private PlanDTO plan;
    private ArrayList<PlanDTO> planes;

    /**
     * Este es el constructor de la clase, inicializa los valores de todos los
     * atributos
     * @param id
     * @param fecha
     * @param cliente
     * @param garante1
     * @param garante2
     * @param tipo
     * @param precio
     * @param entrega
     * @param descripcion
     * @param moto
     * @param plan 
     */
    public VentaDTO(int id, Date fecha, PersonaDTO cliente, PersonaDTO garante1, PersonaDTO garante2, String tipo, double precio, double entrega, String descripcion, MotoDTO moto, PlanDTO plan) {
        this.id = id;
        this.fecha = fecha;
        this.cliente = cliente;
        this.garante1 = garante1;
        this.garante2 = garante2;
        this.tipo = tipo;
        this.precio = precio;
        this.entrega = entrega;
        this.descripcion = descripcion;
        this.moto = moto;
        this.plan = plan;
    }

    public VentaDTO(int id, Date fecha, int cliente, int garante1, int garante2, String tipo, double precio, double entrega, String descripcion) {
        this.id = id;
        this.fecha = fecha;
        this.cliente = new PersonaDTO(cliente);
        if(garante1 != 0){
            this.garante1 = new PersonaDTO(garante1);
        }
        if(garante2 != 0){
            this.garante2 = new PersonaDTO(garante2);
        }
        this.tipo = tipo;
        this.precio = precio;
        this.entrega = entrega;
        this.descripcion = descripcion;
    }
    
    public VentaDTO() {
        this.id = 0;
        this.fecha = new java.sql.Date((new java.util.Date()).getTime());
        this.tipo = "Motovehículo";
        this.cliente = null;
        this.garante1 = null;
        this.garante2 = null;
        this.moto = null;
        this.plan = null;
    }
    

    public PersonaDTO getCliente() {
        return cliente;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public double getEntrega() {
        return entrega;
    }

    public Date getFecha() {
        return fecha;
    }

    public PersonaDTO getGarante1() {
        return garante1;
    }

    public PersonaDTO getGarante2() {
        return garante2;
    }

    public int getId() {
        return id;
    }

    public MotoDTO getMoto() {
        return moto;
    }

    public PlanDTO getPlan() {
        return plan;
    }

    public double getPrecio() {
        return precio;
    }

    public String getTipo() {
        return tipo;
    }

    public ArrayList<PlanDTO> getPlanes() {
        return planes;
    }
    
    

    public void setCliente(PersonaDTO cliente) {
        this.cliente = cliente;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public void setEntrega(double entrega) {
        this.entrega = entrega;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public void setGarante1(PersonaDTO garante1) {
        this.garante1 = garante1;
    }

    public void setGarante2(PersonaDTO garante2) {
        this.garante2 = garante2;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setMoto(MotoDTO moto) {
        this.moto = moto;
    }

    public void setPlan(PlanDTO plan) {
        this.plan = plan;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public void setPlanes(ArrayList<PlanDTO> planes) {
        this.planes = planes;
    }

    /**
     * Compara dos objetos de la clase VentaDTO
     * @param venta
     * @return true si todos algunos atributos son iguales, false en caso 
     * contrario
     */
    public boolean equalsTo(VentaDTO venta) {
        if (this.tipo.equalsIgnoreCase(venta.getTipo()) && this.precio == venta.getPrecio() && this.entrega == venta.getEntrega() && this.descripcion.equalsIgnoreCase(venta.getDescripcion()) ) {
            return true;
        } else {
            return false;
        }    
    }
    
    public PlanDTO getPlanActivo(){
        Iterator<PlanDTO> it = this.planes.iterator();
        while (it.hasNext()) {
            PlanDTO planActivo = it.next();
            if (planActivo.isActivo()) {
                return planActivo;
            }
        }
        return null;       
    }
}
